#include "esp_event.h"
#include "esp_lvgl_port.h"
#include "ui_setting.h"
#include "esp_log.h"
#include "md_images.h"
#include "main_ui.h"
#include "func_ui.h"
//#include "screenshot.h"

//static const char *TAG = "main_ui"; // 日志标签

/* 字体声明 */
LV_FONT_DECLARE(myFont); // 声明自定义字体

static bool is_main_ui = false; // 标记当前UI是否为主UI

static void init_category_pages(lv_obj_t *parent);
/* 
 * 颜色系统优化：
 * 1. 提高对比度确保可读性
 * 2. 使用更柔和的配色方案
 * 3. 明确定义各颜色用途
 */
#define COLOR_PRIMARY    lv_color_hex(0x3A7BD5) // 主色调(深蓝)
#define COLOR_SECONDARY  lv_color_hex(0x00D2FF) // 辅助色(亮蓝)
#define COLOR_BG         lv_color_hex(0xF5F5F5) // 背景色(浅灰)
#define COLOR_TEXT       lv_color_hex(0x333333) // 主文本色(深灰)
#define COLOR_TEXT_LIGHT lv_color_hex(0x666666) // 次要文本色(中灰)
#define COLOR_SHADOW     lv_color_hex(0xDDDDDD) // 阴影色(浅灰)

    /* 图标颜色按分类定义（优化黑色背景适配） */
    static const uint32_t icon_colors[CAT_MAX] = {
        [CAT_TOOL] = 0x4DA6FF,          // 工具(亮蓝色) - 提高亮度，在黑色背景更醒目
        [CAT_MEDIA] = 0x34D399,         // 媒体(鲜绿色) - 增强饱和度，避免暗绿色在黑底发灰
        [CAT_ENTERTAINMENT] = 0xFFD54F, // 娱乐(亮黄色) - 提升明度，保持活力感且不刺眼
        [CAT_SETTING] = 0xB794F4,       // 设置(亮紫色) - 增加亮度，与黑色背景形成鲜明对比
    };

/* ****************尺寸定义****************** */
#define ITEM_WIDTH        140 // 功能项宽度
#define ITEM_HEIGHT       150 // 功能项高度
#define ICON_SIZE         100 // 图标容器尺寸
#define ICON_RADIUS       12  // 图标圆角半径
#define ITEM_SPACING      8   // 功能项间距
#define TAB_BAR_HEIGHT    30  // 标签栏高度
#define STATUS_BAR_HEIGHT 25  // 状态栏高度
#define CARD_PADDING      6   // 卡片内边距

/* ****************颜色定义****************** */
#define TAB_BAR_COlOR      COLOR_TEXT_LIGHT // 标签栏背景色

/* 全局UI对象指针 */
//static lv_obj_t *tabview;     // 标签页视图对象

/****************************** 初始化状态栏***************************************/
// 主UI对象指针
static lv_obj_t *main_ui_handle = NULL;
static lv_obj_t *main_ui_handle_old = NULL;
lv_obj_t *date_label = NULL;  // 日期显示标签
lv_obj_t *time_label = NULL;  // 时间显示标签
lv_obj_t *power_icon = NULL;  // 电源图标
//lv_obj_t *bar = NULL;         // 状态栏容器

/*****************样式*********************/
static lv_style_t style_btn;  // 按钮样式
static lv_style_t style_icon; // 图标样式
static lv_style_t style_card; // 卡片样式

/**
 * @brief 创建UI样式系统
 * @note 初始化所有基础样式，确保视觉一致性
 */
static void create_styles(void)
{
    /* 基础按钮样式 */
    lv_style_init(&style_btn);
    lv_style_set_bg_opa(&style_btn, LV_OPA_0);     // 透明背景
    lv_style_set_border_opa(&style_btn, LV_OPA_0); // 无边框
    lv_style_set_pad_all(&style_btn, 0);           // 无内边距

    /* 按钮按压动画效果 */
    static const lv_style_prop_t trans_props[] = {
        LV_STYLE_TRANSFORM_WIDTH,
        LV_STYLE_TRANSFORM_HEIGHT,
        0 // 结束标记
    };

    // 初始化动画过渡描述
    static lv_style_transition_dsc_t trans_dsc;
    lv_style_transition_dsc_init(&trans_dsc, trans_props,
                                 lv_anim_path_ease_out, 150, 0, NULL);

    // 设置按压时缩小效果
    lv_style_set_transform_width(&style_btn, -5);
    lv_style_set_transform_height(&style_btn, -5);
    lv_style_set_transition(&style_btn, &trans_dsc); // 应用过渡效果

    /* 图标容器样式 */
    lv_style_init(&style_icon);
    lv_style_set_radius(&style_icon, ICON_RADIUS);        // 圆角
    lv_style_set_shadow_width(&style_icon, 6);            // 阴影宽度
    lv_style_set_shadow_color(&style_icon, COLOR_SHADOW); // 阴影颜色
    lv_style_set_shadow_ofs_y(&style_icon, 3);            // Y轴偏移
    lv_style_set_bg_color(&style_icon, lv_color_white()); // 白色背景
    lv_style_set_pad_all(&style_icon, 4);                 // 内边距

    /* 卡片样式(用于标签页内容区) */
    lv_style_init(&style_card);
    lv_style_set_bg_color(&style_card, COLOR_BG);               // 浅灰背景
    lv_style_set_radius(&style_card, 0);                        // 无圆角
    lv_style_set_pad_all(&style_card, CARD_PADDING);            // 统一内边距
    lv_style_set_pad_row(&style_card, ITEM_SPACING);            // 行间距
    lv_style_set_pad_column(&style_card, ITEM_SPACING);         // 列间距
    lv_style_set_layout(&style_card, LV_LAYOUT_FLEX);           // 弹性布局
    lv_style_set_flex_flow(&style_card, LV_FLEX_FLOW_ROW_WRAP); // 自动换行布局
}


/**
 * @brief 创建功能按钮
 * @param parent 父容器对象
 * @param item 功能项数据结构指针
 * @return 创建的功能按钮对象
 * @note 针对320x240小屏幕优化布局和视觉效果
 */
static lv_obj_t *create_func_btn(lv_obj_t *parent, const func_item_t *item)
{
    /* 1. 创建基础按钮容器 */
    lv_obj_t *btn = lv_obj_create(parent);
    lv_obj_remove_style_all(btn);                   // 清除所有默认样式
    lv_obj_set_size(btn, ITEM_WIDTH, ITEM_HEIGHT);  // 固定尺寸
    lv_obj_add_style(btn, &style_btn, 0);           // 应用基础按钮样式
    lv_obj_clear_flag(btn, LV_OBJ_FLAG_SCROLLABLE); // 禁用滚动
    lv_obj_set_style_pad_all(btn, 0, 0);            // 移除内边距
    lv_obj_set_style_radius(btn, 8, 0);             // 设置圆角(8像素)

    /* 2. 创建图标容器 */
    lv_obj_t *icon_cont = lv_obj_create(btn);
    lv_obj_remove_style_all(icon_cont);               // 清除默认样式
    lv_obj_set_size(icon_cont, ICON_SIZE, ICON_SIZE); // 固定图标容器尺寸
    lv_obj_add_style(icon_cont, &style_icon, 0);      // 应用图标容器样式

    // 设置图标容器颜色和阴影效果
    lv_obj_set_style_bg_color(icon_cont, item->color, 0); // 使用分类主题色
    lv_obj_set_style_bg_opa(icon_cont, LV_OPA_COVER, 0);// 不透明
    lv_obj_set_style_shadow_width(icon_cont, 6, 0);       // 阴影宽度
    lv_obj_set_style_shadow_ofs_y(icon_cont, 3, 0);       // 阴影Y偏移
    lv_obj_set_style_shadow_color(icon_cont, lv_color_hex(0x888888), 0);
    lv_obj_align(icon_cont, LV_ALIGN_TOP_MID, 0, 5); // 顶部居中+5px偏移

    /* 3. 创建图标 */
    lv_obj_t *icon = lv_img_create(icon_cont);
    lv_img_set_src(icon, item->icon);          // 设置图标资源
    lv_obj_align(icon, LV_ALIGN_CENTER, 0, 0); // 绝对居中
    // // 设置图标为白色（确保深色背景上可见）
    // lv_obj_set_style_img_recolor(icon, lv_color_white(), 0);
    // lv_obj_set_style_img_recolor_opa(icon, LV_OPA_COVER, 0);

    /* 4. 创建功能名称标签 */
    lv_obj_t *label = lv_label_create(btn);
    lv_label_set_text(label, item->name);                        // 设置功能名称
    lv_obj_set_style_text_font(label, &myFont, 0);               // 使用自定义字体
    lv_obj_set_style_text_color(label, get_btn_font_color(), 0); // 动态文字颜色
    lv_obj_set_width(label, ITEM_WIDTH - 4);                     // 宽度略小于按钮
    lv_obj_set_style_text_align(label, LV_TEXT_ALIGN_CENTER, 0);
    lv_label_set_long_mode(label, LV_LABEL_LONG_WRAP);                // 启用自动换行
    lv_obj_align_to(label, icon_cont, LV_ALIGN_OUT_BOTTOM_MID, 0, 4); // 图标下方

    return icon_cont;// 返回图标容器对象，用于事件处理
}

    /**
 * @brief 初始化状态栏
 * @note 针对小屏幕优化信息密度，同时提升视觉体验
 */
static void
init_status_bar(lv_obj_t *parent)
{
    /* 创建状态栏基础容器 */
    lv_obj_t *bar = lv_obj_create(parent);
    lv_obj_remove_style_all(bar);                     // 清除默认样式
    lv_obj_set_size(bar, LV_HOR_RES, STATUS_BAR_HEIGHT); // 固定高度
    lv_obj_align(bar, LV_ALIGN_BOTTOM_MID, 0, 0);     // 底部对齐
    lv_obj_set_style_bg_color(bar, COLOR_PRIMARY, 0); // 使用主色调
    lv_obj_set_style_bg_opa(bar, LV_OPA_COVER, 0);    // 不透明
    lv_obj_set_style_pad_hor(bar, 10, 0);             // 增加水平内边距
    lv_obj_set_style_pad_ver(bar, 4, 0);              // 垂直内边距
    lv_obj_set_style_radius(bar, 0, 0);               // 无圆角
    lv_obj_clear_flag(bar, LV_OBJ_FLAG_SCROLLABLE);   // 禁用滚动

    /* 创建日期时间容器 - 左侧区域 */
    lv_obj_t *datetime_cont = lv_obj_create(bar);
    lv_obj_remove_style_all(datetime_cont);                           // 清除默认样式
    lv_obj_set_size(datetime_cont, LV_SIZE_CONTENT, LV_SIZE_CONTENT); // 自适应内容尺寸
    lv_obj_set_style_bg_opa(datetime_cont, LV_OPA_0, 0);              // 透明背景
    lv_obj_align(datetime_cont, LV_ALIGN_LEFT_MID, 5, 0);             // 左侧居中对齐
    lv_obj_set_flex_flow(datetime_cont, LV_FLEX_FLOW_ROW);            // 水平布局
    lv_obj_set_style_pad_column(datetime_cont, 4, 0);                 // 日期和时间之间留4px间距

    /* 日期显示 - 优化格式与样式 */
    date_label = lv_label_create(datetime_cont);
    lv_label_set_text(date_label, "2023/12/31");                        // 简洁日期格式
    lv_obj_set_style_text_color(date_label, lv_color_hex(0xDDDDDD), 0); // 浅灰配色（与状态栏对比协调）
    lv_obj_set_style_text_font(date_label, &lv_font_montserrat_14, 0);  // 适配状态栏高度的小号字体
    lv_obj_set_style_text_align(date_label, LV_TEXT_ALIGN_CENTER, 0);   // 居中对齐

    /* 分隔符 - 增强视觉区分 */
    lv_obj_t *sep_label = lv_label_create(datetime_cont);
    lv_label_set_text(sep_label, " ");                                 // 空格分隔（比冒号更柔和）
    lv_obj_set_style_text_color(sep_label, lv_color_hex(0xBBBBBB), 0); // 淡灰色分隔符
    lv_obj_set_style_text_font(sep_label, &lv_font_montserrat_14, 0);

    /* 时间显示 - 优化格式与样式 */
    time_label = lv_label_create(datetime_cont);
    lv_label_set_text(time_label, "12:34:56");                            // 简化时间格式（无秒，更适合小屏）
    lv_obj_set_style_text_color(time_label, lv_color_white(), 0);      // 白色突出显示
    lv_obj_set_style_text_font(time_label, &lv_font_montserrat_14, 0); // 与日期字体统一大小
    lv_obj_set_style_text_align(time_label, LV_TEXT_ALIGN_CENTER, 0);  // 居中对齐
    lv_obj_set_style_text_opa(time_label, LV_OPA_COVER, 0);            // 完全不透明
    /* 系统状态图标容器 - 右侧区域 */
    lv_obj_t *status_cont = lv_obj_create(bar);
    lv_obj_remove_style_all(status_cont);                  // 清除默认样式
    lv_obj_set_size(status_cont, LV_SIZE_CONTENT, 24);     // 固定高度
    lv_obj_align(status_cont, LV_ALIGN_RIGHT_MID, -10, 0); // 右侧对齐
    lv_obj_set_flex_flow(status_cont, LV_FLEX_FLOW_ROW);   // 水平排列
    lv_obj_set_flex_align(status_cont, LV_FLEX_ALIGN_CENTER,
                          LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER);
    lv_obj_set_style_pad_column(status_cont, 8, 0); // 图标间距


    /* 状态图标 */
    const char *icons[] = { LV_SYMBOL_BLUETOOTH, LV_SYMBOL_WIFI, LV_SYMBOL_BATTERY_EMPTY };
    for (size_t i = 0; i < sizeof(icons) / sizeof(icons[0]); i++) {
        lv_obj_t *icon = lv_label_create(status_cont);
        lv_label_set_text(icon, icons[i]);
        lv_obj_set_style_text_color(icon, lv_color_white(), 0);
        lv_obj_set_size(icon, 20, 20);
        lv_obj_set_style_text_font(icon, &lv_font_montserrat_14, 0);
        lv_obj_set_style_pad_right(icon, 8, 0); // 图标间距

        if (i == 2) {
            power_icon = icon; // 记录电源图标
        }
    }

    /* 添加分割线增强视觉层次 */
    lv_obj_t *separator = lv_line_create(bar);
    static lv_point_t points[] = { { 0, 0 }, { 0, 24 } };
    lv_line_set_points(separator, points, 2);
    lv_obj_align(separator, LV_ALIGN_RIGHT_MID, -110, 0); // 位于时间和图标之间
    lv_obj_set_style_line_width(separator, 1, 0);
    lv_obj_set_style_line_color(separator, lv_color_hex(0xFFFFFF), 0);
    lv_obj_set_style_line_opa(separator, LV_OPA_20, 0); // 半透明
}


/*****************************************附加函数***************************************************************/
/*
* @ brief 更新当前日期到屏幕上
*/
void update_current_date_to_screen(uint16_t year, uint8_t month, uint8_t day)
{
    //不对输入参数做合法性检查，直接设置显示
    if (NULL==date_label|| false == is_main_ui)
        return;
    
    char buf[16];
    lv_snprintf(buf, sizeof(buf), "%04d/%02d/%02d", year, month, day); // 格式化日期字符串
    lv_label_set_text(date_label, buf); // 简洁日期格式
}
/*
* @ brief 更新当前时间到屏幕上
*/
void update_current_time_to_screen(uint8_t hour, uint8_t minute, uint8_t second)
{
    //不对输入参数做合法性检查，直接设置显示
    if (NULL == time_label || false == is_main_ui)
        return;
    char buf[16];
    lv_snprintf(buf, sizeof(buf), "%02d:%02d:%02d", hour, minute, second); // 格式化日期字符串
    lv_label_set_text(time_label, buf);                       // 简洁日期格式
}
/*
* @ brief 更新电源图标到屏幕上
* @param is_charging 充电状态
* @param power_val 电源电量百分比
*/
void update_power_icon(uint8_t is_charging,uint8_t power_val)
{
    if (power_icon == NULL || false == is_main_ui)
        return;
    if (is_charging == 1) {
        lv_label_set_text(power_icon, LV_SYMBOL_CHARGE);
        return;
    }
    if (power_val < 10) {
        lv_label_set_text(power_icon, LV_SYMBOL_BATTERY_EMPTY);
    } else if (power_val < 30) {
        lv_label_set_text(power_icon, LV_SYMBOL_BATTERY_1);
    } else if (power_val < 50) {
        lv_label_set_text(power_icon, LV_SYMBOL_BATTERY_2);
    } else if (power_val < 90) {
        lv_label_set_text(power_icon, LV_SYMBOL_BATTERY_3);
    } else {
        lv_label_set_text(power_icon, LV_SYMBOL_BATTERY_FULL);
    }
}

/******************************************功能按钮切换界面*******************************************************************/
/*供功能界面调用的函数*/
/*
* @brief 切换到主界面
*/
void switch_to_main_screen()
{
    is_main_ui = true;
    // 重新加载主界面（标签页）
    lv_scr_load_anim(main_ui_handle, LV_SCR_LOAD_ANIM_NONE, 0, 0, false);
    set_current_func_obj(main_ui_handle);
    set_current_func_type(FUNC_MAX);
}
void refresh_main_screen(void)
{
    is_main_ui = true;
    lvgl_port_lock(0); // 进入LVGL临界区（确保线程安全）
    if (main_ui_handle)
    {
        main_ui_handle_old = main_ui_handle;
        lv_obj_del(main_ui_handle_old);
    }

    create_styles(); // 初始化全局样式（必须在UI创建前调用）
    main_ui_handle = lv_obj_create(NULL);
    // 按顺序初始化UI组件
    init_category_pages(main_ui_handle); // 初始化分类标签页（主内容）
    init_status_bar(main_ui_handle);     // 初始化状态栏（后创建确保在上层）

    lv_disp_load_scr(main_ui_handle);
    set_current_func_obj(main_ui_handle);
    set_current_func_type(FUNC_MAX);
    lvgl_port_unlock(); // 退出LVGL临界区
}

    /**
 * @brief 功能按钮点击事件处理
 * @param e 事件对象
 */
static void func_btn_event_handler(lv_event_t *e)
{
    lv_event_code_t code = lv_event_get_code(e);
    lv_obj_t *btn = lv_event_get_target(e);
   // screenshot_create(main_ui_handle, LV_IMG_CF_TRUE_COLOR, SCREENSHOT_SV_JPEG, "music_play.jpg");

    if (code == LV_EVENT_CLICKED) {// 点击事件
        // 从用户数据中获取分类索引和功能索引
        uint16_t index = (uint16_t)lv_obj_get_user_data(btn);
        // 1. 隐藏主界面的核心内容（标签页视图）
        // 切换到对应功能界面
        int ret=load_func_ui(index);
        if(0==ret )
            is_main_ui = false;
    }
}
/**
 * @brief 为功能按钮添加点击事件
 */
static void add_func_btn_event(lv_obj_t *btn,  uint16_t index)
{
    lv_obj_set_user_data(btn, (void *)index);
    lv_obj_add_event_cb(btn, func_btn_event_handler, LV_EVENT_CLICKED, NULL);
}
/******************************************功能按钮切换界面 END*******************************************************************/

/* 滚动事件处理函数：实现标签页循环切换（无限切换） */
static void scroll_begin_event(lv_event_t *e)
{
    lv_obj_t *cont = lv_event_get_target(e);     // 获取触发事件的对象（tabview的内容容器）
    lv_event_code_t code = lv_event_get_code(e); // 获取事件类型

    lv_obj_t *tv = lv_obj_get_parent(cont); // 获取tabview父对象

    // 只处理滚动结束事件
    if (code == LV_EVENT_SCROLL_END) {
        lv_tabview_t *tabview = (lv_tabview_t *)tv; // 转换为tabview结构体

        lv_coord_t s = lv_obj_get_scroll_x(cont); // 获取当前X轴滚动位置

        lv_point_t p;
        lv_obj_get_scroll_end(cont, &p); // 获取滚动结束后的最终位置

        lv_coord_t w = lv_obj_get_content_width(cont); // 获取内容区域宽度
        lv_coord_t t;                                  // 目标标签页索引

        /* 根据文本方向计算目标页面索引 */
        if (lv_obj_get_style_base_dir(tv, LV_PART_MAIN) == LV_BASE_DIR_RTL) {
            // RTL（从右向左）布局计算：根据滚动位置计算目标页面
            t = -(p.x - w / 2) / w;
        } else {
            // LTR（从左向右）布局计算：标准计算方式
            t = (p.x + w / 2) / w;
        }

        /* 循环切换核心逻辑 */
        if (s < 0) {
            // 情况1：向左滚动越界（滚动位置小于0）
            t = tabview->tab_cnt - 1; // 跳转到最后一个标签页
        } else if ((t == (tabview->tab_cnt - 1)) && (s > p.x)) {
            // 情况2：向右滚动越界（当前在最后一页且滚动位置超过内容宽度）
            t = 0; // 跳转到第一个标签页
        }

        /* 执行页面切换 */
        //bool new_tab = false;
        if (t != lv_tabview_get_tab_act(tv)) {
           // new_tab = true; // 标记需要切换新页面
        }
        // 执行标签页切换（带动画效果）
        lv_tabview_set_act(tv, t, LV_ANIM_ON);
    }
}
/***********************************初始化分类标签页*****************************************************************/
/**
 * @brief 初始化分类标签页
 * @note 针对小屏幕优化标签页布局
 */
static void init_category_pages(lv_obj_t *parent)
{
    /* 创建标签页视图 */
    lv_obj_t *tabview = lv_tabview_create(parent, LV_DIR_TOP, TAB_BAR_HEIGHT);
    lv_obj_set_size(tabview, LV_HOR_RES,
                    LV_VER_RES - STATUS_BAR_HEIGHT); // 减去状态栏高度

    // 设置标签页背景色（从系统设置获取）
    lv_obj_set_style_bg_color(tabview, lv_color_hex(get_screen_color_val()), 0);

    //实现tabview的页面可以循环切换
    /* 实现循环切换的关键：为内容容器添加滚动结束事件处理 */
    lv_obj_t *content = lv_tabview_get_content(tabview);
    lv_obj_add_event_cb(content, scroll_begin_event, LV_EVENT_SCROLL_END, NULL);

    /* 配置标签栏样式 */
    lv_obj_t *tab_btns = lv_tabview_get_tab_btns(tabview); // 获取标签按钮容器
    lv_obj_set_style_bg_color(tab_btns, TAB_BAR_COlOR, 0); // 设置背景色
    lv_obj_set_style_text_font(tab_btns, &myFont, 0);      // 设置标签字体

    /* 标签栏布局优化 */
    lv_obj_set_flex_flow(tab_btns, LV_FLEX_FLOW_ROW); // 水平排列
    lv_obj_set_flex_align(tab_btns, LV_FLEX_ALIGN_SPACE_EVENLY,
                          LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER); // 均匀分布
    lv_obj_set_width(tab_btns, LV_PCT(100));                           // 100%宽度

    /* 禁用标签页内容区域的滚动 */
    lv_obj_clear_flag(tabview, LV_OBJ_FLAG_SCROLLABLE);

    /* 为每个分类创建标签页 */
    func_item_t item = { 0 };
    uint16_t index = 0;

    for (uint8_t i = 0; i < CAT_MAX; i++) {
        // 添加标签页并设置名称
        lv_obj_t *tab = lv_tabview_add_tab(tabview, get_func_category_name(i));
        lv_obj_set_flex_flow(tab, LV_FLEX_FLOW_ROW_WRAP); // 自动换行布局
        lv_obj_set_style_pad_all(tab, 10, 0);             // 内边距
        lv_obj_set_style_pad_row(tab, 12, 0);             // 行间距
        lv_obj_set_style_pad_column(tab, 10, 0);          // 列间距
        lv_obj_set_style_pad_top(tab, 10, 0);             // 顶部留白

        /* 创建当前分类的所有功能按钮 */
        uint8_t count = get_func_cat_count(i);
        for (uint8_t j = 0; j < count; j++) {
            item.name = get_func_name(i, j);             // 获取功能名称
            item.color = lv_color_hex(icon_colors[i]);   // 获取分类颜色
            item.icon = get_func_icon_data(i, j);        // 获取图标资源
            lv_obj_t *btn = create_func_btn(tab, &item); // 创建按钮
            add_func_btn_event(btn, index++); // 绑定事件（当前为空）
        }
    }

    /* 默认选中第一个标签页 */
    lv_tabview_set_act(tabview, 0, LV_ANIM_OFF); // 无动画切换
}






/*********************** 主界面入口函数 ****************************/
/**
 * @brief 主界面初始化入口
 * @note 协调所有UI组件的创建和初始化
 */
void ui_main_init()
{
    // // 临时设置（后续会移除）
    // set_screen_language(LANG_CN);         // 设置屏幕语言为中文
    // set_screen_color(SCREEN_COLOR_BLACK);  // 设置屏幕主题色为深色模式

    lvgl_port_lock(0); // 进入LVGL临界区（确保线程安全）

     refresh_main_screen();
    // update_power_icon(1, 100);
    // update_current_date_to_screen(2025,8,12);
    // update_current_time_to_screen(21, 21);

    lvgl_port_unlock(); // 退出LVGL临界区

    //vTaskDelay(pdMS_TO_TICKS(1000)); // 延时1秒，确保UI初始化完成
}